package socket.example1;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author lhn
 * @date 2024-04-22 11:01
 */

public class SocketTCP01Server {
    public static void main(String[] args) throws IOException {
        //监听9999端口
        //ServerSocket可通过accept()返回多个Socket[多个客户端连接高并发]
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("服务端-端口9999等待连接...");
        //没有客户端连接时，阻塞端口
        //连接成功返回socket对象
        Socket socket = serverSocket.accept();
        System.out.println("socket is " + socket.getClass());
        //通过输入流， 获取数据通道中写入的数据
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[1024];
        int readLen = 0;
        //inputStream.read(buf) 方法尝试从输入流中读取数据到 buf 数组中。
        // 它返回实际读取的字节数，如果已经到达流的末尾，则返回 -1。
        while ((readLen = inputStream.read(buf)) != -1) {
            System.out.println("接收到客户端发送的信息：" + new String(buf, 0,readLen));
        }
        inputStream.close();
        socket.close();
        serverSocket.close();
        System.out.println("服务端关闭...");
    }
}
